package red.stu.pconstraint.annotation;

import java.lang.annotation.*;

/**
 * 流程约束模版节点 <br/>
 *     - 必须指定{@link ProcessBranch}，并将注解放在类上或相同的方法上；否则将因为无法找到所属分支而报错 <br/>
 *     - 当配置 'throwException' 为 'wait' 时，流程节点出错或将会重复调用，请注意处理 <br/>
 *     - 节点ID只能指定一次，多次使用将抛出无法找到指定节点异常 <br/>
 *
 * @author yihrmc@stu.red
 * @date 2019/11/13 16:44
 *
 * @see ProcessBranch
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ProcessNode {

    @AliasFor("nodeId")
    String value() default "";

    /**
     * 流程模版节点ID <br/>
     *      - 当不指定ID时，将使用当前的方法名
     * @return
     */
    @AliasFor("value")
    String nodeId() default "";

}
